Page({
  data: {
    // 表单数据
    title: '',
    content: '',
    selectedCategory: 'scenery',
    images: [],
    
    // 模板信息
    currentTemplate: 'normal',
    templateConfig: {},
    
    // 分类选项
    categories: [
      { id: 'scenery', name: '美景', icon: '🌄' },
      { id: 'food', name: '美食', icon: '🍽️' },
      { id: 'culture', name: '文化', icon: '🏦' },
      { id: 'life', name: '生活', icon: '🏠' },
      { id: 'travel', name: '旅行', icon: '✈️' }
    ],
    
    // 编辑状态
    isSubmitting: false,
    titleFocused: false,
    contentFocused: false,
    
    // 模板特定数据
    helpType: 'rent',
    urgencyLevel: 'normal',
    activityDate: '',
    activityTime: '',
    activityLocation: '',
    maxParticipants: 10,
    guideSteps: [''],
    isVideoContent: false,
    
    // 模板选项
    helpTypes: [
      { id: 'rent', name: '租房住宿', icon: '🏠' },
      { id: 'translate', name: '翻译服务', icon: '📝' },
      { id: 'repair', name: '维修服务', icon: '🔧' },
      { id: 'legal', name: '法律咨询', icon: '⚖️' },
      { id: 'other', name: '其他', icon: '🆘' }
    ],
    urgencyLevels: [
      { id: 'low', name: '不紧急', color: '#4CAF50' },
      { id: 'normal', name: '一般', color: '#FF9800' },
      { id: 'high', name: '紧急', color: '#FF5722' }
    ]
  },

  onLoad(options) {
    console.log('发帖编辑器页面加载');
    
    // 检查是否有模板参数
    const template = options.template || 'normal';
    this.initTemplate(template);
    
    // 如果是编辑模式，加载帖子数据
    if (options.id) {
      this.loadPostData(options.id);
    }
  },

  // 加载帖子数据（编辑模式）
  loadPostData(postId) {
    // 这里可以从服务器或本地存储加载帖子数据
    wx.showToast({
      title: '加载帖子数据...',
      icon: 'loading'
    });
  },

  // 标题输入事件
  onTitleInput(e) {
    this.setData({
      title: e.detail.value
    });
  },

  onTitleFocus() {
    this.setData({
      titleFocused: true
    });
  },

  onTitleBlur() {
    this.setData({
      titleFocused: false
    });
  },

  // 内容输入事件
  onContentInput(e) {
    this.setData({
      content: e.detail.value
    });
  },

  onContentFocus() {
    this.setData({
      contentFocused: true
    });
  },

  onContentBlur() {
    this.setData({
      contentFocused: false
    });
  },

  // 分类选择
  onCategoryChange(e) {
    const categoryId = e.currentTarget.dataset.id;
    this.setData({
      selectedCategory: categoryId
    });
  },

  // 选择图片
  onChooseImage() {
    wx.chooseImage({
      count: 9 - this.data.images.length,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const newImages = [...this.data.images, ...res.tempFilePaths];
        this.setData({
          images: newImages
        });
      },
      fail: (err) => {
        wx.showToast({
          title: '选择图片失败',
          icon: 'error'
        });
      }
    });
  },

  // 预览图片
  onPreviewImage(e) {
    const current = e.currentTarget.dataset.src;
    wx.previewImage({
      current,
      urls: this.data.images
    });
  },

  // 删除图片
  onDeleteImage(e) {
    const index = e.currentTarget.dataset.index;
    const images = [...this.data.images];
    images.splice(index, 1);
    this.setData({
      images
    });
  },

  // 发布帖子
  onSubmit() {
    const { title, content, selectedCategory, images } = this.data;
    
    // 表单验证
    if (!title.trim()) {
      wx.showToast({
        title: '请输入帖子标题',
        icon: 'none'
      });
      return;
    }
    
    if (!content.trim()) {
      wx.showToast({
        title: '请输入帖子内容',
        icon: 'none'
      });
      return;
    }
    
    if (title.length > 50) {
      wx.showToast({
        title: '标题不能超过50个字符',
        icon: 'none'
      });
      return;
    }
    
    if (content.length > 500) {
      wx.showToast({
        title: '内容不能超过500个字符',
        icon: 'none'
      });
      return;
    }

    this.setData({ isSubmitting: true });

    // 模拟发布请求
    wx.showLoading({
      title: '发布中...',
      mask: true
    });

    setTimeout(() => {
      wx.hideLoading();
      this.setData({ isSubmitting: false });
      
      wx.showToast({
        title: '发布成功！',
        icon: 'success',
        duration: 2000
      });

      setTimeout(() => {
        wx.navigateBack();
      }, 2000);
    }, 2000);
  },

  // 保存草稿
  onSaveDraft() {
    const { title, content, selectedCategory, images } = this.data;
    
    if (!title.trim() && !content.trim()) {
      wx.showToast({
        title: '没有内容可保存',
        icon: 'none'
      });
      return;
    }

    // 保存到本地存储
    const draft = {
      title,
      content,
      selectedCategory,
      images,
      timestamp: Date.now()
    };
    
    wx.setStorageSync('postDraft', draft);
    
    wx.showToast({
      title: '草稿已保存',
      icon: 'success'
    });
  },

  // 加载草稿
  onLoadDraft() {
    try {
      const draft = wx.getStorageSync('postDraft');
      if (draft) {
        this.setData({
          title: draft.title || '',
          content: draft.content || '',
          selectedCategory: draft.selectedCategory || 'scenery',
          images: draft.images || []
        });
        
        wx.showToast({
          title: '草稿加载成功',
          icon: 'success'
        });
      } else {
        wx.showToast({
          title: '暂无草稿',
          icon: 'none'
        });
      }
    } catch (err) {
      wx.showToast({
        title: '加载草稿失败',
        icon: 'error'
      });
    }
  },

  // 初始化模板
  initTemplate(template) {
    const templateConfigs = {
      help: {
        title: '求助发布',
        icon: '🆘',
        color: '#FF5722',
        placeholder: {
          title: '请描述您遇到的问题...',
          content: '请详细描述问题的具体情况、需要的帮助类型和您的联系方式...'
        }
      },
      activity: {
        title: '活动发起',
        icon: '🎉',
        color: '#FF9800',
        placeholder: {
          title: '活动名称（如：语言交换会、足球比赛）',
          content: '详细介绍活动内容、目的和注意事项...'
        }
      },
      guide: {
        title: '攻略分享',
        icon: '📋',
        color: '#2196F3',
        placeholder: {
          title: '攻略标题（如：一天内办好暂住证）',
          content: '简要描述攻略内容和适用情况...'
        }
      },
      moment: {
        title: '瞬间分享',
        icon: '📸',
        color: '#9C27B0',
        placeholder: {
          title: '这一刻的心情...',
          content: '简单记录此刻的美好或感受...'
        }
      }
    };
    
    this.setData({
      currentTemplate: template,
      templateConfig: templateConfigs[template] || templateConfigs.normal || {}
    });
    
    // 设置导航栏标题
    const config = templateConfigs[template];
    if (config) {
      wx.setNavigationBarTitle({
        title: config.title
      });
    }
  },

  // 求助类型选择
  onHelpTypeChange(e) {
    const helpType = e.currentTarget.dataset.type;
    this.setData({ helpType });
  },

  // 紧急程度选择
  onUrgencyChange(e) {
    const urgency = e.currentTarget.dataset.level;
    this.setData({ urgencyLevel: urgency });
  },

  // 活动日期选择
  onDateChange(e) {
    this.setData({ activityDate: e.detail.value });
  },

  // 活动时间选择
  onTimeChange(e) {
    this.setData({ activityTime: e.detail.value });
  },

  // 活动地点输入
  onLocationInput(e) {
    this.setData({ activityLocation: e.detail.value });
  },

  // 参与人数输入
  onParticipantsInput(e) {
    this.setData({ maxParticipants: parseInt(e.detail.value) || 10 });
  },

  // 添加攻略步骤
  addGuideStep() {
    const steps = [...this.data.guideSteps, ''];
    this.setData({ guideSteps: steps });
  },

  // 删除攻略步骤
  removeGuideStep(e) {
    const index = e.currentTarget.dataset.index;
    const steps = this.data.guideSteps.filter((_, i) => i !== index);
    this.setData({ guideSteps: steps.length ? steps : [''] });
  },

  // 攻略步骤输入
  onStepInput(e) {
    const index = e.currentTarget.dataset.index;
    const value = e.detail.value;
    const steps = [...this.data.guideSteps];
    steps[index] = value;
    this.setData({ guideSteps: steps });
  },

  // 切换内容类型（图片/视频）
  toggleContentType() {
    this.setData({ isVideoContent: !this.data.isVideoContent });
  },

  // 返回上一页
  onBack() {
    const { title, content } = this.data;
    
    if (title.trim() || content.trim()) {
      wx.showModal({
        title: '提示',
        content: '您的内容尚未保存，是否离开？',
        success: (res) => {
          if (res.confirm) {
            wx.navigateBack();
          }
        }
      });
    } else {
      wx.navigateBack();
    }
  }
});